﻿#ifndef __ITCPClient_H__
#define __ITCPClient_H__
#include <lampe/config.h>
#include <lampe/network/IClient.h>
#include <lampe/base_type_vendor.h>
#include <lampe/network/IClientCallback.h>
namespace lampe{
namespace network{

/**
 * class ITCPClient
 * Класс TCP клиента
 **/
class ITCPClient:public virtual IClient{

	/**
	 * Метод вызывает соединение данного клиента к удалённому серверу
	 *
	 * @param host адресс сервера, к которому нужно подключаться
	 * @param port порт, к которому нужно подключаться
	 * @return TRUE, если соединение установленно. Иначе FALSE
	 */
	virtual bool connectTo(String,u32 port)=0;
	
	/**
	 * Отключение от сервера. Может применятся как при отключении от
	 * удалённого сервера, так и клиентов от сервера
	 */
	virtual void Disconnect()=0;
};

/**
 * Создаёт и возвращяет экземпляр TCP клиента. Создавать его в ручную
 * может понадобится только для того, что бы создавать TCP клиент
 * (т.е. НЕ TCP сервер)
 *
 * @param callBack управляющий интерфейс
 * @return экземпляр класса TCP клиента
 **/
ITCPClient*createTCPClient(IClientCallback*callBack);

}//namespace network
}//namespace lampe
#endif
